package pokestar;
import java.io.Serializable;
import java.util.LinkedList;
import objectos.*;

/**
 * @author igo
 * Classe Mapa
 */
public class Mapa implements Serializable{

    private Objecto[][] matriz = new Objecto[17][25];
    private final int X = 545;
    private final int Y = 800;
    
    /**
     * Constructor do Mapa
     */
    public Mapa(){
        Vazio vazio = new Vazio();
        
        for(int l=0; l<matriz.length; l++){
            for(int c=0; c<matriz[l].length; c++){
                matriz[l][c] = vazio;
            }
        }
    }
    
    /**
     * 
     * @return Retorna a matriz bidimensional de Objectos
     */
    public Objecto[][] getMatriz(){
        return matriz;
    }
    
    /**
     * 
     * @return Retorna a largura do mapa
     */
    public int getX(){
        return X;
    }
    
    /**
     * 
     * @return Retorna a altura do mapa
     */
    public int getY(){
        return Y;
    }

    /**
     * Método que adiciona à matriz uma lista de personagens
     * @param j - Número do jogador para que possa ser colocado no respectivo canto inicial
     * @param lp - Lista de personagens a colocar na matriz
     */
    public void adiciona(int j, LinkedList<Objecto> lp) {
        if(j == 0){
            matriz[0][0] = lp.get(0);
            matriz[2][0] = lp.get(1);
            matriz[2][2] = lp.get(2);
            matriz[0][2] = lp.get(3);
        }else if(j == 1){
            matriz[16][24] = lp.get(0);
            matriz[14][24] = lp.get(1);
            matriz[14][22] = lp.get(2);
            matriz[16][22] = lp.get(3);
        }else if(j == 2){
            matriz[16][0] = lp.get(0);
            matriz[16][2] = lp.get(1);
            matriz[14][2] = lp.get(2);
            matriz[14][0] = lp.get(3);
        }else if(j == 3){
            matriz[0][24] = lp.get(0);
            matriz[0][22] = lp.get(1);
            matriz[2][22] = lp.get(2);
            matriz[2][24] = lp.get(3);
        }
    }
}